home *** CD-ROM | disk | FTP | other *** search
- #ifndef PHASH
-
- #include <setjmp.h>
- #include "timer.h"
-
- /* Kernel process control block */
- #define PHASH 17 /* Number of wait table hash chains */
- struct proc {
- struct proc *prev; /* Process table pointers */
- struct proc *next;
-
- jmp_buf env; /* Process state */
- char i_state; /* Process interrupt state */
-
- unsigned short state;
- #define READY 0
- #define WAITING 1
- #define SUSPEND 2
- void *event; /* Wait event */
- int16 *stack; /* Process stack */
- unsigned stksize; /* Size of same */
- char *name; /* Arbitrary user-assigned name */
- int retval; /* Return value from next pwait() */
- struct timer alarm; /* Alarm clock timer */
- };
- #define NULLPROC (struct proc *)0
- extern struct proc *Waittab[]; /* Head of wait list */
- extern struct proc *Rdytab; /* Head of ready list */
- extern struct proc *Curproc; /* Currently running process */
- extern struct proc *Susptab; /* Suspended processes */
- extern int Stkchk; /* Stack checking flag */
-
- #if defined(__STDC__) || defined(__TURBOC__)
- struct proc *newproc(char *name,unsigned int stksize,void (*pc)(),
- int iarg,void *parg1,void *parg2);
- struct proc *mainproc(char *name);
- void killself(void);
- void killproc(struct proc *pp);
- void psignal(void *event,int n);
- void chkstk(void);
- void suspend(struct proc *pp);
- void resume(struct proc *pp);
- void alert(struct proc *pp,int val);
- int pwait(void *event);
- void chname(struct proc *pp,char *newname);
- void psetup(struct proc *pp,int iarg,void *parg1,void *parg2,void (*pc)());
- #else
- struct proc *newproc(),*mainproc();
- void killself(),killproc(),psignal(),chkstk();
- void suspend();
- void resume();
- void alert();
- int pwait();
- void chname();
- void psetup();
- #endif
- int ps();
-
- /* Stack background fill value for high water mark checking */
- #define STACKPAT 0x55aa
-
- /* Value stashed in location 0 to detect null pointer dereferences */
- #define NULLPAT 0xdead
-
- #endif /* PHASH */
-